Skip to main content

谈谈 shouldComponentUpdate

是什么

shouldComponentUpdate(nextProps, nextState)

shouldComponentUpdate 方法是一个生命周期方法,当 React 渲染 一个组件时,这个方法不会被调用 ,并根据返回值来判断是否要继续渲染组件。默认值是 true, 即 state 每次发生变化组件都会重新渲染。

示例

禁止组件渲染

shouldComponentUpdate() 方法返回 false 时执行的操作(点击按钮无法修改)

预览地址

class Header extends React.Component {
constructor(props) {
super(props);
this.state = {favoritesite: "runoob"};
}
// 重点!!
shouldComponentUpdate() {
return false;
}
changeSite = () => {
this.setState({favoritesite: "google"});
}
render() {
return (
<div>
<h1>我喜欢的网站是 {this.state.favoritesite}</h1>
<button type="button" onClick={this.changeSite}>修改</button>
</div>
);
}
}

ReactDOM.render(<Header />, document.getElementById('root'));

组件正常渲染

shouldComponentUpdate() 方法返回 true 时执行的操作(点击按钮可以修改)

预览地址

class Header extends React.Component {
constructor(props) {
super(props);
this.state = {favoritesite: "runoob"};
}
// 重点!!
shouldComponentUpdate() {
return true;//默认值为true
}
changeSite = () => {
this.setState({favoritesite: "google"});
}
render() {
return (
<div>
<h1>我喜欢的网站是 {this.state.favoritesite}</h1>
<button type="button" onClick={this.changeSite}>修改</button>
</div>
);
}
}

ReactDOM.render(<Header />, document.getElementById('root'));

解决了什么(shouldComponentUpdate 的作用)

  • 用于在没有必要更新 UI 的时候返回 false,以提高渲染性能

参考文章